#include <iostream>

using namespace std;

/*
 * 引用  给变量起别名  实质是一个指针常量  指向不可以修改，指向的值可以修改
 *      语法  数据类型 &别名 = 原名
 *      注：  1、引用必须要初始化
 *           2、引用一旦初始化后，不可以更改了
 *      形参修饰实参：地址传递，引用传递
 *      注：  1、不要返回局部变量的引用   和不要返回局部变量一个道理
 *           2、函数的调用可以作为左值
 *
 *      常量引用    用于修饰形参，防止误操作
 */

int& test01() {
    static int a = 10;
    return a;
}

void printFunc(const int &a){   // 常量引用，函数中不可修改该值
//    a = 100;
}

int main() {
    int a = 10;
    int &b = a;
    cout << "a= " << a << endl;
    cout << "b= " << b << endl;

    b = 11;
    cout << "a= " << a << endl;
    cout << "b= " << b << endl;

    int& response = test01();
    cout << "response= " << response << endl;

    test01() = 100;   // 函数返回值是引用，这个函数调用可以作为左值
    cout << "response= " << response << endl;


    return 0;
}
